ssize_t rio_writen(int fd,void *usrbuf,size_t n)
{
size_t nleft=n;
ssize_t nwritten;
char *bufp=usrbuf;

while(nleft>0){
if((nwritten=write(fd,bufp,nleft))<=0){
if(errno==EINTR)
nwritten=0;
else
return -1;
}
nleft-=nwritten;
bufp+=nwritten;
}
return n;
}

